package com.t.bricks.bussiness.service.flowdefinenode.impl;

import org.springframework.stereotype.Service;

import com.t.bricks.bussiness.db.entity.flowdefinenode.FlowDefineNode;
import com.t.bricks.bussiness.service.flowdefinenode.FlowDefineNodeService;
import com.t.bricks.model.MsgEmity;

/**
 * 流程节点定义'FlowDefineNode表'基本业务操作类接口实现
 * @author HuangXinBian
 * @DateTime 2022年01月26日 15:18:56
 */
@Service
public class FlowDefineNodeServiceImpl implements FlowDefineNodeService<FlowDefineNode> {

	/**
	 * 新增
	 * @param flowDefineNode 流程节点定义 对象实体
	 * @return MsgEmity
	 */
	@Override
	public MsgEmity addNode(FlowDefineNode flowDefineNode) {
		if (null == flowDefineNode) {
			return MsgEmity.err(8101, "参数为空");
		}
		
		if (null == flowDefineNode.getsNodeUsers() || "".equals(flowDefineNode.getsNodeUsers())) {
			return MsgEmity.err(8102, "需要限定操作用户");
		}
		
		if (null == flowDefineNode.getiType()) {
			return MsgEmity.err(8103, "节点类型限定:1:起点;2:发起者;3:过程(任意通过);4:过程(一票否决);5:结束");
		}
		
		int iType = flowDefineNode.getiType();
		if ("1,2,3,4,5".contains(String.valueOf(iType))) {
			return MsgEmity.err(8104, "节点类型限定:1:起点;2:发起者;3:过程(任意通过);4:过程(一票否决);5:结束");
		}
		
		if ("2,3,4".contains(String.valueOf(iType)) && null == flowDefineNode.getsNext() ) {
			return MsgEmity.err(8105, "节点类型为'2:发起者;3:过程(任意通过);4:过程(一票否决)'则必须有下一节点信息");
		}
		
		if (5 == iType) {
			return MsgEmity.err(8106, "结束节点不能有'下一节点'信息");
		}
		
		return this.add(flowDefineNode);
	}
	
}
